#region Using References

using System;

#endregion

namespace Beaker.OpenCube.Mapping
{
	/// <summary>
	/// Signals an implementation of a converter that can convert between local and NBT values.
	/// </summary>
	public interface IValueConverter
	{
		/// <summary>
		/// Convert from NBT value to a local .NET value.
		/// </summary>
		/// <param name="nbtValue">The NBT value to convert to a local value.</param>
		/// <returns>A local value.</returns>
		object FromNbtToLocal( object nbtValue );
		
		/// <summary>
		/// Convert from local .NET value to a NBT value.
		/// </summary>
		/// <param name="localValue">The local value to convert to a NBT value.</param>
		/// <returns>A NBT value.</returns>
		object FromLocalToNbt( object localValue, Type targetType );
	}
}